package com.iuie.ns.datum.service;

import java.util.List;

import com.iuie.ns.datum.vo.TableChangeHistoryVO;
import com.iuie.ns.datum.vo.TableStructureVO;
import com.iuie.ns.frame.web.dataset.vo.Page;

/**
 * 表结构-service
 * @author iuie
 * @date 2018-01-25 15:30:43
 */
public interface ITableStructureService {

	/**
	 * 分页查询表实例
	 * @param page
	 * @param condition
	 * @return
	 */
	List<TableStructureVO> findByPage(Page page, TableStructureVO condition);
	
	/**
	 * 根据ID查询
	 * @param id
	 * @return
	 */
	TableStructureVO findById(Long id);
	
	/**
	 * 删除表实例
	 * @param id
	 */
	void deleteTableStructure(Long id);

	/**
	 * 保存表实例
	 * @param table
	 */
	void saveTableStructure(TableStructureVO table, String updateRemark);
	
	/**
	 * 添加一条更新历史
	 * @param updateRemark
	 */
	void addUpdateHistory(String updateRemark, Long tableId);
	
	/**
	 * 查询表实例变更历史
	 * @param tableId
	 * @return
	 */
	List<TableChangeHistoryVO> findChangeHistory(Long tableId);

	/**
	 * 根据tableId分页查询变更记录
	 * @param tableId
	 * @param page
	 * @return
	 */
	List<TableChangeHistoryVO> findChangeHistoryByPage(Long tableId, Page page);

	/**
	 * 根据项目ID删除表
	 * @param projectId
	 */
	void deleteTableStructureByProjectId(Long projectId);
	
	/**
	 * 通过项目和表的英文名唯一确定一个表实例
	 * @param enTableName
	 * @param projectId
	 * @return
	 */
	TableStructureVO findByEnTableNameAndProjectId(String enTableName, Long projectId);

}
